/*
*   Copyright: Fabian Hajek (2012)  Programmieren: C   -   Semesterarbeit WS 2011/2012
*
*   Projekt: Schreinerei.exe
*
*   Author: $Author: webmaster@die-schwarzen-schwaben.de $
*
*   Name: f_steps.c
*   URL:    $URL: http://semesterarbeit-wi-11-12.googlecode.com/svn/trunk/Semesterarbeit2/Schreinerei/Definitionen/f_steps.c $
*
*   Description:   Beeinhaltet das F_STEPS Grundgeruest
*
*   Last update:    $Date: 2012-02-24 21:45:10 +0000 (Fri, 24 Feb 2012) $
*
*   Rev:      $Rev: 56 $
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


/*INCLUDE input functions*/
/*
#include "Funktionen/func_input.h"*/
#include "../default/structures.h"
#include "../Definitionen/define.h"

#include "f_steps.h"

int f_steps(STEP *p_step, int quantity, float time)
{
    /*ABHAENGIG VON ZEIT*/

    int i = 0;
    int err = 0;
    /*Suche in Arbeitsschritt, welche Ressource verarbeitet wird*/
    if(!p_step->p_ressources && strcmp(p_step->ressource,"")) /*Falls kein Pointer vorhanden, aber Wert existiert*/
    {
        p_ressource = search_ressource(p_step->ressource);
    }
    else
    {
        p_ressource = p_step->p_ressources;
    }

    /*Ressource in p_ressource abgelegt (sofern es eine gibt)*/

    /*Genuegend Ressourcen im Lager vorhanden?*/
    if(p_ressource && p_ressource->stock < (quantity*time))
    {
        err = 2;
    }

    /*Geld fuer AS vorhanden?*/
    if(kapital<(quantity*time*p_step->price))
    {
        err = 1;
    }

    /*Ressourcen vom Lagerbestand abziehen, Kapital abzueglich der AS-Kosten*/
    if(!err)
    {
        log("\n\nArbeitsschritt ",0,1);
        log(p_step->name,0,1);
        log(" wird ausgefuehrt. Zeiteinheiten, die verbraucht werden: ",0,1);
        log(0,time,1);

        kapital = kapital - time*p_step->price;

        log("\n  Neuer Wert von Kapital: ",0,1);
        log(0,kapital,1);

        if(p_ressource) p_ressource->stock = p_ressource->stock - (int)(quantity*time);              //!Ressourcen koennen doppelt abgebucht werden. Kontrolle, ob STEP bereits angebrochen wurde fehlt

        log("\n  Ressource die vom Lager abgebucht wurde: ",0,1);
        log(p_ressource->name,0,1);log(" (",0,1);log(0,quantity*time,1);log(")",0,1);
    }

    return err;
}
